The present invention pertains to the field of computer operating systems. More particularly, the present invention relates to facilitating the debugging and upgrading of a computer operating system.
The Macintosh line of computer systems from Apple Computer, Inc. of Cupertino, Calif., is a well-known line of computer systems. The Macintosh computer""s permanent read-only memory (ROM), historically called the Macintosh ToolBox ROM, has traditionally been structured as one monolithic ROM, which contained both low-level and high-level operating system (OS) code. That is, the ToolBox ROM contained the routines needed by the computer at power-up time (e.g., hardware knowledge, initialization, diagnostics, drivers, etc.), as well as a significant amount of higher-level OS code. Examples of hardware-specific software are drivers, feature tables, diagnostics, and hardware initialization code. Examples of the higher-level software are high level managers, experts and other higher level software, such as QuickDraw, Small Computer Systems Interface (SCSI) Manager, etc. This combining of high-level and low-level OS code resulted from the fact that, when the first Macintosh computers were designed, ROM was cheaper than random access memory (RAM), and the available disk space (which was floppy-based) was at a premium. Because the higher-level code was not expected to change substantially, it was logical from an economic and performance standpoint to include as much higher-level code as possible in the ROM along with the start-up code.
As a result of the expanding set of Macintosh OS features, however, some of the higher-level code (and hardware-specific code not explicitly needed before booting) has expanded beyond the practical limits provided by ROMs. The size of the ToolBox ROM code in recent Macintosh machines has been approximately 4 Megabytes. The architecture of the Macintosh OS has evolved to the point where the ROM could be augmented and modified by System Software, such as the System file or the Enabler (a smaller file which can override the System file). In this way, the functionality of the ROM could be spread out among the ROM, Enabler and the disk-based System Software. However, this intertwining of hardware and software code spread out from ROM to disk makes the production of new, improved computer systems more difficult and time consuming.
Using the traditional approach, designing a major new computer system or making even a minor revision to computer hardware typically entails having to modify the ROM, the Enabler, and/or the System Software. That is, if even just a small, hardware-specific part of the ROM has to be changed to accommodate a hardware change, the entire ROM would have to be rebuilt. Once the ROM rebuilding occurs, substantial time and expense is required to rigorously test it and the companion system software. Patches to the firmware and software tend to be complicated, adding to the need for testing. The new System build needs to be tested on many different platforms running different versions of the OS, to make sure it correctly ran on the large number of different hardware and software combinations. Each new release over the years has built upon the old ones and added more complexity to the coding and demands on testing engineers. Thus, it is desirable to have a way to increase reliability and to reduce time to market, development costs, and manufacturing costs for computer systems.
A method and apparatus for use in booting a computer system are provided. The method includes loading a compressed image of a first portion of the OS of the computer system into a storage device of the computer system, which may be RAM, for example. The compressed image of the first portion of the OS is then decompressed and executed as part of the boot sequence of the computer system.
In particular embodiments, the first portion of the operating system may include an intermediate-level portion of the operating system, while a second, low-level portion of the operating system containing hardware specific aspects are stored in read-only memory. The process of transferring the first portion from non-volatile storage to volatile storage and decompressing the first portion may be initiated by the low-level portion stored in the read-only memory. Once decompressed, the portion of memory storing the first portion of the operating system may be write-protected, and this read-only memory portion may be mapped out of the address space of RAM used by the operating system.
Other features of the present invention will be apparent from the accompanying drawings and from the detailed description which follows.